package src.itheima04;

import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashSet;

/*
    java.util.LinkedHashSet<E> 类
        特点:
            1.无索引
            2.不可重复(唯一)
            3.有序: 保证存入和取出的顺序是一致的

        底层数据结构:
            1.底层数据结构: 哈希表 + 链表
            2.哈希表: 保证元素唯一
            3.链表: 保证元素有序


    LinkedHashSet存储自定义Student对象
    步骤:
        1.定义标准的Student类
        2.创建LinkedHashSet集合对象,泛型Student
        3.LinkedHashSet集合对象调用add方法,添加多个Student对象
        4.遍历输出: 迭代器/增强for

     要求:
        HashSet/LinkedHashSet存储的元素所属的类要覆盖重写hashCode方法和equals方法
 */
public class Demo05LinkedHashSetStudent {
    public static void main(String[] args) {
        //2.创建LinkedHashSet集合对象,泛型Student
        LinkedHashSet<Student> set = new LinkedHashSet<>();

        //3.LinkedHashSet集合对象调用add方法,添加多个Student对象
        set.add(new Student("小军子",18));
        set.add(new Student("小军子",18));
        set.add(new Student("小文字",16));
        set.add(new Student("小文字",16));
        set.add(new Student("大亮子",17));
        set.add(new Student("大亮子",17));
        set.add(new Student("大欢子",19));
        set.add(new Student("大欢子",19));

        System.out.println("---------------------------");
        //4.遍历输出: 迭代器
        Iterator<Student> it = set.iterator();
        while(it.hasNext()) {
            System.out.println(it.next());
        }
    }
}
